package final_wearebatman_model;


//az inverter logikai elemet megvalósító osztály
public class Inverter extends Gate implements IhasInput, IhasOutput {

    private Input input;
    private Output output;
    private Wire wireInput;
    private Wire wireOutput;

    //konstruktor
    public Inverter(String name) {
        super(name, 1, 1);
        this.input = new Input();
        this.output = new Output();
        this.name = name;
    }

    // gate ősosztály metódusainak implementálása
    @Override
    public void setInputData(int pin, int data) {
        input.setData(data);
    }

    @Override
    public int getInputData(int pin) {
        return input.getData();
    }

    @Override
    public void connectWireOutput(int pin, Wire wire) {
        this.wireOutput = wire;
    }

    @Override
    public void connectWireInput(int pin, Wire wire) {
        this.wireInput = wire;
    }

    //inverter működése
    public void operate() {
        this.output.setData(this.input.getData() == 1 ? 0 : 1);
        this.wireOutput.operate();
    }

    @Override
    public int getOutputData(int pin) {
        return output.getData();
    }

    @Override
    public void setOutputData(int pin, int data) {
        this.output.setData(data);
    }

    //számlálók nullázása
    public void resetCounter() {
    }

    //működés utáni állapot
    public String getFinalState() {
        return Integer.toString(this.output.getData());
    }
}
